package br.com.certificacao.Conjuntos.hashcode;

public class Casa {
	String endereco;
	int numero;
	double qtdeComodos;
	
	public Casa(String endereco, int numero, double qtdeComodos){
		this.endereco = endereco;
		this.numero = numero;
		this.qtdeComodos = qtdeComodos;
	}
	public boolean equals (Object c){
		if(((Casa)c).endereco==this.endereco)
			return true;
		return false;
	}
	public int hashCode(){
		return (int)qtdeComodos;//cast necessario porque variavel de classe qtdeComodos foi declarada como double
	}
	public static void main(String[] args) {
		Casa c1 = new Casa("Rua A",10,3);
		Casa c2 = new Casa("Rua A", 20, 3);
		Casa c3 = new Casa("Rua B", 29,7);
		c1 = c3;//ao atribuir o valor de c1 a c3 estou fazendo com que apontem para o mesmo endereco na memoria
		System.out.println(c1.equals(c2));
		System.out.println(c1.equals(c3));
		System.out.println(c2.equals(c3));
		System.out.println("HashCode de c1: " + c1.hashCode());//hashCode de c1 passa a ser 7 e nao 3, devido a instrucao na linha 25
		System.out.println("HashCode de c2: " + c2.hashCode());
		System.out.println("HaschCode de c3: " + c3.hashCode());
		System.out.println(c1==c2);//false
		System.out.println(c1==c3);//true
		System.out.println(c2 == c3);//false
		
	}

}
